import CONFIG from '@/common/config.js'
import {
	$outLogin,
	$clearAppStore
	// getClientId
} from '@/common/utils/tool.js'
const {
	$DOMAIN
} = CONFIG
const SUCCESS_CODE_LIST = {
	// 0: true,
	1: true,
	// 200: true
}
const OUTLOGIN_CODE_LIST = {
	401: true,

}
const install = (Vue) => {
	// 初始化请求配置
	Vue.config.globalProperties.$u.http.setConfig((config) => {
		/* config 为默认全局配置*/
		config.baseURL = $DOMAIN
		return config
	})
	// 请求拦截
	Vue.config.globalProperties.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
		return handleParams(config)
	}, config => { // 可使用async await 做异步操作
		return Promise.reject(config)
	})
	// 响应拦截
	Vue.config.globalProperties.$u.http.interceptors.response.use((response) => {
		/* 对响应成功做点什么 可使用async await 做异步操作*/
		const data = response.data
		// 自定义参数
		const custom = response.config?.custom
		custom.showmask && uni.hideLoading()

		if (SUCCESS_CODE_LIST[data.code]) {
			return Promise.resolve(data)
		} else {
			//closeErrorTips 关闭错误提示
			if (!custom.closeErrorTips) uni.$u.toast(data.msg)
			return Promise.reject(data)
		}
	}, (response) => {
		if (OUTLOGIN_CODE_LIST[response.data.code]) { //TOKEN过期 
			uni.showModal({
				title: '提示',
				content: response.data.msg,
				showCancel: false,
				success: () => {
					$clearAppStore()
					uni.$u.route({
						url: '/pages/login'
					})
				}
			})
		}
		if (response.data.code=='500') { //TOKEN过期
			uni.showModal({
				title: '提示',
				content: '你的账号已被冻结请联系平台解冻',
				showCancel: false,
				success: () => {
						$clearAppStore()
						uni.$u.route({
							auth:false,
							url: '/pages/index',
							type:'switchTab'
						})
				}
			})
		}
		uni.hideLoading()
		return Promise.reject(response)
	})
}
async function handleParams(config) {
	let timestamp = Date.now()
	config.header.token = uni.getStorageSync('token')
	config.custom.showmask && uni.showLoading({
		title: '加载中...',
		mask: true
	})
	return config
}
export default {
	install
}